Make GtkFrame propagate the "frame" style class to its header label
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 17 Jan 2011 02:55:53 +0000 (03:55 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 17 Jan 2011 03:43:31 +0000 (04:43 +0100)
gtk/gtkframe.c

index 04950f6feaebb42af340ddcfb3db040a10c2f182..5e6e2fc7878da795ec9f1e74ff959503a2f60dbb 100644 (file)
@@ -78,6 +78,8 @@ static void gtk_frame_forall        (GtkContainer   *container,
                                     gboolean        include_internals,
                                     GtkCallback     callback,
                                     gpointer        callback_data);
+static GtkWidgetPath * gtk_frame_get_path_for_child (GtkContainer *container,
+                                                     GtkWidget    *child);
 
 static void gtk_frame_compute_child_allocation      (GtkFrame      *frame,
                                                     GtkAllocation *child_allocation);
@@ -177,6 +179,7 @@ gtk_frame_class_init (GtkFrameClass *class)
 
   container_class->remove = gtk_frame_remove;
   container_class->forall = gtk_frame_forall;
+  container_class->get_path_for_child = gtk_frame_get_path_for_child;
 
   class->compute_child_allocation = gtk_frame_real_compute_child_allocation;
 
@@ -334,6 +337,21 @@ gtk_frame_forall (GtkContainer *container,
     (* callback) (priv->label_widget, callback_data);
 }
 
+static GtkWidgetPath *
+gtk_frame_get_path_for_child (GtkContainer *container,
+                              GtkWidget    *child)
+{
+  GtkFramePrivate *priv = GTK_FRAME (container)->priv;
+  GtkWidgetPath *path;
+
+  path = GTK_CONTAINER_CLASS (gtk_frame_parent_class)->get_path_for_child (container, child);
+
+  if (child == priv->label_widget)
+    gtk_widget_path_iter_add_class (path, -1, GTK_STYLE_CLASS_FRAME);
+
+  return path;
+}
+
 /**
  * gtk_frame_set_label:
  * @frame: a #GtkFrame